﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web;
using Telerik.Web.UI;

namespace Mantenimiento.Interfaz
{
    public partial class Usuarios : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            cargaDatos();
        }

        private void cargaDatos()
        {
            rgUsuarios.DataSource = Negocio.Usuario.obtenerUsuarios();
            rgUsuarios.DataBind();
        }


        private void actualizarGrid()
        {
            List<Negocio.Usuario> lista = Negocio.Usuario.obtenerUsuarios();
            ViewState["Usuarios"] = lista;
        }

        private List<Negocio.Usuario> GetUsuarios(string sUser)
        {
            List<Negocio.Usuario> lista = null;

            try
            {
                lista = Negocio.Usuario.obtenerUsuarios();
            }
            catch (Exception ex)
            {
            }

            return lista;
        }

        private List<Negocio.Usuario> LUsuarios
        {
            get
            {
                object obj = ViewState["Usuarios"];
                if ((!(obj == null)))
                {
                    return (List<Negocio.Usuario>)obj;
                }
                List<Negocio.Usuario> lista = GetUsuarios(Page.User.Identity.Name);

                ViewState["Usuarios"] = lista;

                return lista;
            }
        }

        #region REBIND GRID
        private void Rebind()
        {
            actualizarGrid();

            this.rgUsuarios.DataSource = this.LUsuarios;
            this.rgUsuarios.Rebind();
        }
        #endregion

        #region NEEDDATASOURCE
        protected void rgUsuarios_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
        {
            this.rgUsuarios.DataSource = this.LUsuarios;
        }
        #endregion

        protected void rgUsuarios_ItemCommand(object source, GridCommandEventArgs e)
        {
            //UserControl userControl = Utilidades.ObtenerControl(Page.Controls, GridEditFormItem.EditFormUserControlID) as UserControl;
            Boolean bExito = true;
            Negocio.Usuario oUsuario = new Negocio.Usuario();
            try
            {
                oUsuario = (Negocio.Usuario)e.Item.DataItem;


                switch (e.CommandName)
                {
                    case "InitInsert":
                        Action_UsuarioAdd();
                        break;
                    case "PerformInsert":
                        break;
                    case "Edit":
                        Action_UsuarioEdit(oUsuario.Login);
                        break;
                    case "NewPass":
                        Action_UsuarioNewPass(oUsuario.Login);
                        break;
                    case "Update":
                        break;
                    case "Delete":
                        Action_UsuarioDelete(oUsuario);
                        break;
                    case "DeleteSelected":
                        break;
                    case "SendNew":
                        break;
                    case "SendUpdate":
                        break;
                    case "RebindGrid":
                        break;
                    case "ExportExcel":
                        break;
                    case "EditSelected":
                        break;

                }
            }
            catch (Exception ex)
            {
            }
            if (bExito == false)
            {
                e.Canceled = true;
            }
        }

        private void Action_UsuarioAdd()
        {
            Response.Redirect("Usuarios_Add.aspx");
        }

        private void Action_UsuarioEdit(string sLogin)
        {
            Response.Redirect(string.Format("Usuarios_Edit.aspx?Login={0}", sLogin));
        }

        private void Action_UsuarioNewPass(string sLogin)
        {
            Response.Redirect(string.Format("Usuarios_NewPass.aspx?Login={0}", sLogin));
        }

        private void Action_UsuarioDelete(Negocio.Usuario u)
        {
            u.eliminar();
            Rebind();
        }
    }
}